package com.ruoyi.market.service.impl;

import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.market.domain.Level;
import com.ruoyi.market.mapper.LevelMapper;
import com.ruoyi.market.service.ILevelService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.validation.Validator;
import java.util.List;

/**
 * 等级设置 业务层处理
 * 
 * @author ruoyi
 */
@Service
public class LevelServiceImpl implements ILevelService
{

    @Autowired
    private LevelMapper levelMapper;

    @Autowired
    protected Validator validator;

    /**
     * 根据条件分页查询等级设置列表
     * 
     * @param level 等级设置信息
     * @return 等级设置信息集合信息
     */
    @Override
    public List<Level> selectLevelList(Level level)
    {
        return levelMapper.selectLevelList(level);
    }

    /**
     * 通过等级设置名查询等级设置
     * 
     * @param levelTitle 等级设置名
     * @return 等级设置对象信息
     */
    @Override
    public Level selectLevelByLevelTitle(String levelTitle)
    {
        return levelMapper.selectLevelByLevelTitle(levelTitle);
    }

    /**
     * 通过等级设置ID查询等级设置
     * 
     * @param levelId 等级设置ID
     * @return 等级设置对象信息
     */
    @Override
    public Level selectLevelById(Long levelId)
    {
        return levelMapper.selectLevelById(levelId);
    }

    /**
     * 校验名称是否唯一
     *
     * @param level 等级信息
     * @return 结果
     */
    @Override
    public boolean checkLevelTitleUnique(Level level)
    {
        Long levelId = StringUtils.isNull(level.getLevelId()) ? -1L : level.getLevelId();
        Level info = levelMapper.checkLevelTitleUnique(level.getLevelTitle(), level.getShopId());
        if (StringUtils.isNotNull(info) && info.getLevelId().longValue() != levelId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 新增保存等级设置信息
     * 
     * @param level 等级设置信息
     * @return 结果
     */
    @Override
    @Transactional
    public int insertLevel(Level level)
    {
        // 新增等级设置信息
        int rows = levelMapper.insertLevel(level);
        return rows;
    }

    /**
     * 修改保存等级设置信息
     * 
     * @param level 等级设置信息
     * @return 结果
     */
    @Override
    @Transactional
    public int updateLevel(Level level)
    {
        return levelMapper.updateLevel(level);
    }

    /**
     * 批量删除等级设置信息
     * 
     * @param levelIds 需要删除的等级设置ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteLevelByIds(Long[] levelIds) { return levelMapper.deleteLevelByIds(levelIds); }
}
